﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace aaaaa
{
    public partial class Form1 : Form
    {
        private string connectionString;
        string commandString;
        OleDbDataAdapter DBAdapter;
        OleDbCommandBuilder myCommandBuilder;

        public Form1()
        {
            InitializeComponent();

            connectionString = "provider=Microsoft.JET.OLEDB.4.0;"
              + "data source ="
              + Application.StartupPath
              + @"\friend.mdb";
            commandString = "select * from a"; // * : 모든 field
            DBAdapter
                = new OleDbDataAdapter(commandString, connectionString);
            myCommandBuilder
                = new OleDbCommandBuilder(DBAdapter);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                // DB table 을 access로 부터 가져와 DataSet에 fill
                DataSet DS = new DataSet();
                DBAdapter.Fill(DS, "a");
                DataTable aTable = DS.Tables["a"];
                // record 객체 생성
                DataRow newRow = aTable.NewRow();
                newRow["a"] = textBox2.Text;
                newRow["b"] = textBox9.Text;
                newRow["c"] = textBox8.Text;

                // record추가
                aTable.Rows.Add(newRow);
                // 데이터 업데이트
                DBAdapter.Update(DS, "a");
                //그리드 뷰 업데이트
                dataGridView1.DataSource = DS.Tables["a"].DefaultView;
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: 이 코드는 데이터를 'friendDataSet.a' 테이블에 로드합니다. 필요한 경우 이 코드를 이동하거나 제거할 수 있습니다.
            this.aTableAdapter.Fill(this.friendDataSet.a);

        }

        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                // DB table 을 access로 부터 가져와 DataSet에 fill
                DataSet DS = new DataSet();
                DBAdapter.Fill(DS, "a");
                DataTable aTable = DS.Tables["a"];

                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["a"];
                aTable.PrimaryKey = PrimaryKey;

                DataRow currRow = aTable.Rows.Find(textBox2.Text);
                currRow.Delete();

                DBAdapter.Update(DS, "a");
                //그리드 뷰 업데이트
                dataGridView1.DataSource = DS.Tables["a"].DefaultView;

            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                DataSet DS = new DataSet("a"); // creat Dataset as named "a"
                DBAdapter.Fill(DS, "a"); // 

                DataTable aTable = DS.Tables["a"];
                DataColumn[] PrimaryKey = new DataColumn[1]; // creat culumn

                PrimaryKey[0] = aTable.Columns["a"]; // 
                aTable.PrimaryKey = PrimaryKey;
                DataRow currRow = aTable.Rows.Find(textBox2.Text);

                currRow.BeginEdit();
                currRow["b"] = textBox9.Text;
                currRow["c"] = textBox8.Text;
                currRow.EndEdit();

                DataSet UpdatedSet = DS.GetChanges(DataRowState.Modified);
                if (UpdatedSet.HasErrors)
                {
                    MessageBox.Show("변경된 데이터에 문제가 있습니다.");
                }
                else
                {
                    DBAdapter.Update(UpdatedSet, "a");
                    DS.AcceptChanges();
                }
                dataGridView1.DataSource = DS.Tables["a"].DefaultView;
            }

            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataSet DS = new DataSet();

            DBAdapter.Fill(DS, "a");

            DataTable aTable = DS.Tables["a"];

            if (e.RowIndex < 0)   // 레코드가 하나도 없을 때
            {
                return;
            }

            else if (e.RowIndex > aTable.Rows.Count - 1)   // 빈 셀을 클릭했을 떄
            {
                MessageBox.Show("해당하는 데이터가 존재하지 않습니다.");
                return;
            } //데이터가 있으면 뿌려주고 없으면 리턴해주고

            DataRow currRow = aTable.Rows[e.RowIndex];

            textBox2.Text = currRow["a"].ToString(); // 모두 문자로 바꿔줌
            textBox9.Text = currRow["b"].ToString();
            textBox8.Text = currRow["c"].ToString();
        }

        private void button5_Click(object sender, EventArgs e)
        {

        }

        private void panel2_Paint(object sender, PaintEventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}